﻿// 管理首页脚本
/*====================================
 *基于JQuery 1.10.2以上主框架
 *DTcms管理界面
 *作者：一些事情
====================================*/
//页面加载完成时执行
$(function () {
  //点击切换按钮
  $(".icon-menu").click(function () {
    toggleMainMenu(); //切换按钮显示事件
  });
  loadMenuTree(true); //加载管理首页左边导航菜单
  mainPageResize(); //主页面响应式

  //页面尺寸改变时
  $(window).resize(function () {
    //延迟执行,防止多次触发
    setTimeout(function () {
      mainPageResize(); //主页面响应式
      popMenuTreeResize(); //快捷菜单的设置
    }, 100);
  });
});

//导航菜单显示和隐藏
function mainPageResize() {
  var docWidth = $(window).width();
  if (docWidth > 800) {
    $("body").removeClass("lay-mini");
    $("#main-nav").show();
    $(".nav-right").show();
  } else {
    $("body").addClass("lay-mini");
    $("#main-nav").hide();
  }
}

//切换按钮显示事件
function toggleMainMenu() {
  $("body").toggleClass("lay-mini");
  if (!$("body").hasClass("lay-mini") && $(window).width() > 800) {
    $("#main-nav").show();
    $(".nav-right").show();
  } else {
    $("#main-nav").hide();
    if (($(".main-top").width() - 42) < $(".nav-right").width()) {
      $(".nav-right").hide();
    } else {
      $(".nav-right").show();
    }
  }
}

//加载管理首页左边导航菜单
function loadMenuTree(_islink) {
  //判断是否跳转链接
  var islink = false;
  if (arguments.length == 1 && _islink) {
    islink = true;
  }
  //发送AJAX请求
  $.ajax({
    type: "GET",
    url: "system.menu/index.html",
    dataType: "html",
    success: function (data, textStatus) {
      //将得到的数据插件到页面中
      $("#sidebar-nav").html(data);
      $("#pop-menu .list-box").html(data);
      //初始化导航菜单
      initMenuTree(islink);
      initPopMenuTree();
    }
  });
}

//初始化导航菜单
function initMenuTree(islink) {
  var navObj = $("#main-nav");
  var navGroupObj = $("#sidebar-nav .list-group");
  var navItemObj = $("#sidebar-nav .list-group .list-wrap");
  //先清空NAV菜单内容
  navObj.html('');
  navGroupObj.each(function (i) {
    //添加菜单导航
    var navHtml = $('<a>' + $(this).children("h1").attr("title") + '</a>').appendTo(navObj);
    //默认选中第一项
    if (i == 0) {
      $(this).show();
      navHtml.addClass("selected");
    }
    //为菜单添加事件
    navHtml.click(function () {
      navObj.children("a").removeClass("selected");
      $(this).addClass("selected");
      navGroupObj.hide();
      navGroupObj.eq(navObj.children("a").index($(this))).show();
    });
    //首先隐藏所有的UL
    $(this).find("ul").hide();
    //绑定树菜单事件.开始
    $(this).find("ul").each(function (j) { //遍历所有的UL
      //遍历UL第一层LI
      $(this).children("li").each(function () {
        var liObj = $(this);
        var spanObj = liObj.children("a").children("span");
        //判断是否有子菜单和设置距左距离
        var parentIconLenght = liObj.parent().parent().children("a").children(".icon").length; //父节点的左距离
        //设置左距离
        var lastIconObj;
        for (var n = 0; n <= parentIconLenght; n++) { //注意<=
          lastIconObj = $('<i class="icon"></i>').insertBefore(spanObj); //插入到span前面
        }

        //如果有下级菜单
        if (liObj.children("ul").length > 0) {
          liObj.children("a").removeAttr("href"); //删除链接，防止跳转
          liObj.children("a").append('<b class="expandable iconfont icon-close"></b>'); //最后插件一个+-
          //如果a有自定义图标则将图标插入，否则使用默认的样式
          if (typeof(liObj.children("a").attr("icon")) != "undefined") {
            lastIconObj.append('<img src="' + liObj.children("a").attr("icon") + '" />')
          } else {
            lastIconObj.addClass("iconfont icon-folder");
          }
          //隐藏下级的UL
          liObj.children("ul").hide();
          //绑定单击事件
          liObj.children("a").click(function () {
            //如果菜单已展开则闭合
            if ($(this).children(".expandable").hasClass("icon-open")) {
              //设置自身的右图标为+号
              $(this).children(".expandable").removeClass("icon-open");
              $(this).children(".expandable").addClass("icon-close");
              //隐藏自身父节点的UL子菜单
              $(this).parent().children("ul").slideUp(300);
            } else {
              //搜索所有同级LI且有子菜单的右图标为+号及隐藏子菜单
              $(this).parent().siblings().each(function () {
                if ($(this).children("ul").length > 0) {
                  //设置自身的右图标为+号
                  $(this).children("a").children(".expandable").removeClass("icon-open");
                  $(this).children("a").children(".expandable").addClass("icon-close");
                  //隐藏自身子菜单
                  $(this).children("ul").slideUp(300);
                }
              });
              //设置自身的右图标为-号
              $(this).children(".expandable").removeClass("icon-close");
              $(this).children(".expandable").addClass("icon-open");
              //显示自身父节点的UL子菜单
              $(this).parent().children("ul").slideDown(300);
            }
          });

        } else {
          //如果a有自定义图标则将图标插入，否则使用默认的样式
          if (typeof(liObj.children("a").attr("icon")) != "undefined") {
            lastIconObj.append('<img src="' + liObj.children("a").attr("icon") + '" />');
          } else if (typeof(liObj.children("a").attr("href")) == "undefined" || liObj.children("a").attr("href").length < 2) { //如果没有链接
            liObj.children("a").removeAttr("href");
            lastIconObj.addClass("iconfont icon-folder");
          } else {
            lastIconObj.addClass("iconfont icon-file");
          }
          if (typeof(liObj.children("a").attr("href")) != "undefined") {
            //绑定单击事件
            liObj.children("a").click(function (e) {
              var href = $(this).attr("href");
              if (href.indexOf('#') == 0) {
                e.preventDefault();
                return;
              }
              //删除所有的选中样式
              navGroupObj.find("ul li a").removeClass("selected");
              //删除所有的list-group选中样式
              navGroupObj.removeClass("selected");
              //删除所有的main-nav选中样式
              navObj.children("a").removeClass("selected");
              //自身添加样式
              $(this).addClass("selected");
              //设置父list-group选中样式
              $(this).parents(".list-group").addClass("selected");
              //设置父main-nav选中样式
              navObj.children("a").eq(navGroupObj.index($(this).parents(".list-group"))).addClass("selected");
              //隐藏所有的list-group
              navGroupObj.hide();
              //显示自己的父list-group
              $(this).parents(".list-group").show();
              //保存到cookie
              if (typeof($(this).attr("navid")) != "undefined") {
                addCookie("dt_manage_navigation_cookie", $(this).attr("navid"), 240);
              }
            });
          }
        }

      });
      //显示第一个UL
      if (j == 0) {
        $(this).show();
        //展开第一个菜单
        if ($(this).children("li").first().children("ul").length > 0) {
          $(this).children("li").first().children("a").children(".expandable").removeClass("icon-close");
          $(this).children("li").first().children("a").children(".expandable").addClass("icon-open");
          $(this).children("li").first().children("ul").show();
        }
      }
    });
    //绑定树菜单事件.结束
  });
  //定位或跳转到相应的菜单
  linkMenuTree(islink);
}

//定位或跳转到相应的菜单
function linkMenuTree(islink, navid) {
  var navObj = $("#main-nav");
  var navGroupObj = $("#sidebar-nav .list-group");
  var navItemObj = $("#sidebar-nav .list-group .list-wrap");

  //读取Cookie,如果存在该ID则定位到对应的导航
  var cookieObj;
  var argument = arguments.length;
  if (argument == 2) {
    cookieObj = navGroupObj.find('a[navid="' + navid + '"]');
  } else {
    cookieObj = navGroupObj.find('a[navid="' + getCookie("dt_manage_navigation_cookie") + '"]');
  }
  if (cookieObj.length > 0) {
    //显示所在的导航和组
    //删除所有的选中样式
    navGroupObj.find("ul li a").removeClass("selected");
    //删除所有的list-group选中样式
    navGroupObj.removeClass("selected");
    //删除所有的main-nav选中样式
    navObj.children("a").removeClass("selected");
    //自身添加样式
    cookieObj.addClass("selected");
    //设置父list-group选中样式
    cookieObj.parents(".list-group").addClass("selected");
    //设置父main-nav选中样式
    navObj.children("a").eq(navGroupObj.index(cookieObj.parents(".list-group"))).addClass("selected");
    //隐藏所有的list-group
    navGroupObj.hide();
    //显示自己的父list-group
    cookieObj.parents(".list-group").show();
    //遍历所有的LI父节点
    cookieObj.parents("li").each(function () {
      //搜索所有同级LI且有子菜单的右图标为+号及隐藏子菜单
      $(this).siblings().each(function () {
        if ($(this).children("ul").length > 0) {
          //设置自身的右图标为+号
          $(this).children("a").children(".expandable").removeClass("icon-open");
          $(this).children("a").children(".expandable").addClass("icon-close");
          //隐藏自身子菜单
          $(this).children("ul").hide();
        }
      });
      //设置自身的右图标为-号
      if ($(this).children("ul").length > 0) {
        $(this).children("a").children(".expandable").removeClass("icon-close");
        $(this).children("a").children(".expandable").addClass("icon-open");
      }
      //显示自身的UL
      $(this).children("ul").show();
    });
    //检查是否需要保存到cookie
    if (argument == 2) {
      addCookie("dt_manage_navigation_cookie", navid, 240);
    }
    //检查是否需要跳转链接
    var href = cookieObj.attr("href");
    if (islink == true && href != "" && href.indexOf('#') != 0) {
      frames["mainframe"].location.href = cookieObj.attr("href");
    }
  } else if (argument == 2) {
    //删除所有的选中样式
    navGroupObj.find("ul li a").removeClass("selected");
    //保存到cookie
    addCookie("dt_manage_navigation_cookie", "", 240);
  }
}

//初始化快捷导航菜单
function initPopMenuTree() {
  //遍历及加载事件
  $("#pop-menu .pop-box .list-box li").each(function () {
    var linkObj = $(this).children("a");
    linkObj.removeAttr("href");
    if ($(this).children("ul").length > 0) { //如果无下级菜单
      linkObj.addClass("nolink");
    } else {
      linkObj.addClass("link");
      linkObj.click(function () {
        linkMenuTree(true, linkObj.attr("navid")); //加载函数
      });
    }
  });
  //设置快捷菜单容器的大小
  popMenuTreeResize();
}

//设置快捷菜单容器的大小
function popMenuTreeResize() {
  //计算容器的宽度
  var groupWidth = $("#pop-menu .list-box .list-group").outerWidth();
  var divWidth = $("#pop-menu .list-box .list-group").length * groupWidth;
  var winWidth = $(window).width();
  if (divWidth > winWidth) {
    var groupCount = Math.floor(winWidth / groupWidth);
    if (groupCount > 0) {
      groupWidth = groupWidth * groupCount;
    }
  } else {
    groupWidth = divWidth;
  }
  $("#pop-menu .pop-box").width(groupWidth);
  //只有显示的时候才能设置高度
  if ($("#pop-menu").css("display") == "block") {
    setPopMenuHeight();
    //重设导航滚动条
    $("#pop-menu .list-box").getNiceScroll().resize();
  }
}

//设置快捷菜单的高度
function setPopMenuHeight() {
  //计算容器的高度
  var divHeight = $(window).height() * 0.6;
  var groupHeight = 0;
  $("#pop-menu .list-box .list-group").each(function () {
    if ($(this).height() > groupHeight) {
      groupHeight = $(this).height();
    }
  });
  if (divHeight > groupHeight) {
    divHeight = groupHeight;
  }
  $("#pop-menu .list-box .list-group").height(groupHeight);
  $("#pop-menu .pop-box").height(divHeight);
}

//快捷菜单的显示与隐藏
function togglePopMenu() {
  if ($("#pop-menu").css("display") == "none") {
    $("#pop-menu").show();
    //只有显示的时候才能设置高度
    setPopMenuHeight();
    //设置导航滚动条
    $("#pop-menu .list-box").niceScroll({
      touchbehavior: false,
      cursorcolor: "#ccc",
      cursoropacitymax: 0.6,
      cursorwidth: 5,
      autohidemode: false
    });
  } else {
    $("#pop-menu").hide();
    $("#pop-menu .list-box").getNiceScroll().remove();
  }
}